/*
 * EnviarMensajeDeDecisionALosEstudiantes.java
 *
 * Created on August 20, 2007, 7:17 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package hero.hook;

import hero.interfaces.BnNodeLocal;
import hero.interfaces.BnNodeValue;
import hero.interfaces.Constants;
import hero.interfaces.ProjectSession;
import hero.interfaces.ProjectSessionHome;
import hero.interfaces.ProjectSessionUtil;
import hero.interfaces.UserSession;
import hero.interfaces.UserSessionHome;
import hero.interfaces.UserSessionUtil;
import hero.util.HeroException;
import hero.util.HeroHookException;
import java.rmi.RemoteException;
import java.util.Date;
import java.util.Vector;
import javax.ejb.CreateException;
import javax.naming.NamingException;
/**
 *
 * @author kabad
 */
public class EnviarMensajeDeDecisionALosEstudiantes implements hero.hook.NodeHookI{
    
    /** Creates a new instance of EnviarMensajeDeDecisionALosEstudiantes */
    public EnviarMensajeDeDecisionALosEstudiantes() {
    }
    public String getMetadata() {
        return Constants.Nd.BEFORETERMINATE;
    }
    public void create(Object b,BnNodeLocal n) throws HeroHookException {}
    public void beforeStart(Object b,BnNodeLocal n) throws HeroHookException {}
    public void afterTerminate(Object b,BnNodeLocal n) throws HeroHookException {}
    public void onCancel(Object b,BnNodeLocal n) throws HeroHookException {}
    public void anticipate(Object b,BnNodeLocal n) throws HeroHookException {}
    public void onDeadline(Object b,BnNodeLocal n) throws HeroHookException {}
    public void afterStart(Object b, BnNodeLocal n) throws HeroHookException {}
    public void onReady(Object b,BnNodeLocal n) throws HeroHookException {}
    public void beforeTerminate(Object b,BnNodeLocal n) throws HeroHookException {
        ProjectSessionHome prjHome;
        BnNodeValue actividad;
        System.out.println("Enviando mensaje de decision al estudiante:" + n.getBnProject().getName());

        UserSession usrSession;
        UserSessionHome usrHome;

        try {
            usrHome = UserSessionUtil.getHome();
            usrSession = usrHome.create();

            prjHome = (ProjectSessionHome) ProjectSessionUtil.getHome();
            ProjectSession prjSession = prjHome.create();
            prjSession.initProject(n.getBnProject().getName());
                          
            String idActividad= prjSession.getProperty("idTempSolicitudActividad").getTheValue();
            System.out.println("id temporal "+idActividad);
            prjSession.setNodeProperty( "Enviar Mensaje de Decision a Estudiantes","idSolicitudActividad" ,idActividad);        
               //setear fecha real confirmacion, seteada por el profesor
         
            
            System.out.println("Esperando Confirmacion de Estudiantes Seleccionados" + "instancia"+n.getBnProject().getName());
            Vector listaFechas = new Vector();
            listaFechas.add(System.currentTimeMillis() + new Long(3 * 60 * 1000));
            System.out.println("Fecha de hoy: " + new Date());

            prjSession.setNodeDeadlines("Esperando Confirmacion de Estudiantes Seleccionados", listaFechas);

           for (Object dead : prjSession.getNodeDeadlines("Esperando Confirmacion de Estudiantes Seleccionados")) {
                System.out.println("Deadline: getNodeDeadlines" + dead);
            }

        } catch (RemoteException ex) {
            ex.printStackTrace();
        } catch (CreateException ex) {
            ex.printStackTrace();
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (HeroException ex) {
            ex.printStackTrace();
        }        
    }
}
